package com.sxj.corejava.code14_Lambda表达式;

import java.util.function.Consumer;

/**
 * @author 石小俊
 */
public class Test02_消费型接口 {

    public static void main(String[] args) {

        // 匿名内部类
        testConsumer(new Consumer<String>() {
            @Override
            public void accept(String s) {
//                System.out.println("我现在正在" + s);
                System.out.println("");
            }
        }, "紫金学院");

        // Lambda
        testConsumer(s -> System.out.println("我现在正在紫金学院的" + s), "实训楼610");
        testConsumer2(s -> {
            if (s < 5) {
                System.out.println("今天是工作日,得上课");
            } else {
                System.out.println("今天周末,出去浪");
            }
        }, 6);

        testConsumer(s -> System.out.println("今天学习太累,晚上打算去" + s + "放松下"), "夫子庙");
    }

    /**
     * 消费型接口Consumer<T>
     * 当前接口的泛型类型与实际调用的方法中的参数的类型一致
     * 由于此处并不是真正的调用者,该方法会被其他方法所调用
     * 此处没有做具体的视线,而是由实际调用者做具体的实现
     * @param consumer 消费型接口
     * @param param    消费型接口中所需要的形参
     */
    public static void testConsumer(Consumer<String> consumer, String param) {
        consumer.accept(param);
    }

    public static void testConsumer2(Consumer<Integer> consumer, Integer param) {
        consumer.accept(param);
    }

}

